#ifndef FIRE_DATA_H
#define FIRE_DATA_H

#include <QtCore>

// 消防设备数据结构体
class CFireData
{
public:
    bool IsCommNormal();
    bool IsCommFault();

    bool IsRunning();
    bool IsStopped();

    bool IsFault();
    bool IsNoFault();

    bool IsAlarm();
    bool IsNoAlarm();

    bool IsOpening();
    bool IsClosed();

    //获取***的显示文本
    QString GetCommStateText();

    void InitToInvalid();
    void InitToZero();
    void InitToValue(quint16 uvalue, float fvalue);

public:
    // quint16 dbModbusAddr;
    // quint16 devAddr;
    // quint16 failedCount;// 通信失败次数
    // quint16 connError;  // 通信是否正常    0 - 通信正常   1 - 通信故障

    // quint16 devError;  // 消防设备故障
    // quint16 fireAlarm; // 消防报警
    // quint16 spryAlarm; // 喷洒报警

    // quint16 usDevTemp[50]; // [0]:消防系统状态 1:故障  [1]:火警总状态   [2]-[18]:17个探测器火警
    // float   fDevTemp[50];

    quint16 m_uCommState;           //1801 通讯状态 0--正常,1-故障
    quint16 m_uRev[99];
    float m_fRev[100];

    //转发的100个UINT16数据
    quint16 m_uRunState;            //1802 运行状态 0运行,1停止
    quint16 m_uFaultState;          //1803 故障状态 0正常,1故障
    quint16 m_uAlarmState;          //1804 告警状态 0正常,1告警
    quint16 m_uSwitchState;         //1805 开关机状态 0已开机,1已关机
    quint16 m_uAlarmLevel;          //1806 告警等级 0无,1一级告警,2二级告警,3三级告警,4四级告警

    quint16 m_uAlarmSource;         //1807 数据来源 0无来源,1通讯采集,2DI反馈
    quint16 m_uAlarmAppType;        //1808 采集程序类型(具体类型待定)
    quint16 m_uAlarmDiNo;           //1809 告警反馈的DI编号(从1开始)
    quint16 m_uFireAction;          //1810 消防动作/启动
    quint16 m_uFireRecover;         //1811 消防恢复 0未知,1未恢复,2已恢复

    quint16 m_uAlarmEnable;         //1812 告警使能:0禁用,1开启
    quint16 m_uFaultEnable;         //1813 故障使能:0禁用,1开启
    quint16 m_uStartEnable;         //1814 启动使能:0禁用,1开启
    quint16 m_uFireSpray;           //1815 消防喷洒 0未知,1未喷洒,2喷洒中

    quint16 m_uData[86];            //1816~2000 转发的UINT16数据:预留,数组数量=200-上面的转发数

    //转发的100个FLOAT数据
    float m_fHarmfulGasDensity;     //2001 有害气体浓度
    float m_fFlammableGasDensity;   //2003 可燃气体浓度
    float m_fData[98];              //2005~2399 转发的FLOAT数据:预留,数组数量=100-上面的转发数

    // 1801     2000	200	UINT16	200	读消防的UNIT16数据	0x03/0x04	无	消防数据
    // 2001     2400	400	FLOAT	200	读消防的FLOAT数据	0x03/0x04	无
    // 31601    31800	200	UINT16	200	写消防的数据	0x03/0x04	0x06

    //20601~20800 设置的数据:预留,数组数量=100-上面的设置数
    float m_fSetData[150];
    float m_fSetDataCopy[150];
    //上面150个浮点设置值
    //下面150个整形设置值
    quint16 m_uSetData[150];
    quint16 m_uSetDataCopy[150];
};

#endif //FIRE_DATA_H
